TreeSet底層原理
TreeSet底層原理
- TreeSet默認的規則
- 對於數值類型:Integer Double,默認由小到大排列
- 對於字符,字符串:按照Ascii碼表中的數字生序排列
- 使用TreeSet,若為自定義類型,一定要定義比較方法
- hashCode & equals是給hashSet用的,底層是哈希表
- TreeSet底層是紅黑樹,寫 hashCode & equals沒用
- 要重寫compareTo方法
- TreeSet的兩種比較方法
- 方法一:
- implements Comparable接口重寫compareTo方法
- implements Comparable接口重寫compareTo方法
- 方法二:
- 比較器排序,創建時傳遞比較器對象即可
- 比較器排序,創建時傳遞比較器對象即可
- 方法一:
- 假設第一種方式不滿足你,可以用方式2
- 怎樣的情境會用第二種?
- 字符串中的排序規則Java已經定義好,是用字符的順序abc來排序
- 假若我想要用長度排序,你也不能修改原代碼
- 這種情況方式一無法滿足你,才會用方式二
- 怎樣的情境會用第二種?
- 假如方式一跟方式二同時存在,Java聽誰的?
- 答案:方式二為準
- 就近原則,剛剛也說過Java已經定義好字符串的比較方式
- 我們還是可以用方式2來比較
- 所以這時兩個規則都存在 這時用方式2
- 答案:方式二為準